package _2022.hot100._238_除自身以外数组的乘积;

import java.util.Arrays;

/**
 * @author： YHSimon
 * @date： 2022-05-19 11:02
 */
public class Solution {
    public int[] productExceptSelf(int[] nums){
        int len=nums.length;
        int[] ans=new int[len];
        int[] left=new int[len];
        int[] right=new int[len];
        left[0]=1;
        right[len-1]=1;
        int tmp=1;
        for(int i=1;i<len;i++){
            tmp*=nums[i-1];
            left[i]=tmp;
        }
        tmp=1;
        for(int i=len-2;i>=0;i--){
            tmp*=nums[i+1];
            right[i]=tmp;
        }

        for(int i=0;i<len;i++){
            ans[i]=left[i]*right[i];
        }
        return ans;
    }

    public int[] productExceptSelf2(int[] nums){
        int len=nums.length;
        int[] ans=new int[len];
        ans[0]=1;
        for(int i=1;i<len;i++){
            ans[i]=ans[i-1]*nums[i-1];
        }
        int r=1;
        for(int i=len-1;i>=0;i--){
            ans[i]=ans[i]*r;
            r*=nums[i];
        }
        return ans;
    }

    public static void main(String[] args) {
        Solution s = new Solution();
        System.out.println(Arrays.toString(s.productExceptSelf2(new int[]{1,2,3,4})));
    }
}
